const generalFileExtSupported = [
	'.md',
	'.txt',
	'.pdf',
	'.csv',
	'.xlsx',
	'.xls'
];

export const programmingFilesExtensions = {
	'.json': 'JSON',
	'.yaml': 'YAML',
	'.yml': 'YAML',
	'.xml': 'XML',
	'.html': 'HTML',
	'.htm': 'HTML',
	'.abap': 'ABAP',
	'.asc': 'AGS Script',
	'.ash': 'AGS Script',
	'.ampl': 'AMPL',
	'.mod': 'Modula-2',
	'.g4': 'ANTLR',
	'.apl': 'APL',
	'.dyalog': 'APL',
	'.asp': 'ASP',
	'.asax': 'ASP',
	'.ascx': 'ASP',
	'.ashx': 'ASP',
	'.asmx': 'ASP',
	'.aspx': 'ASP',
	'.axd': 'ASP',
	'.dats': 'ATS',
	'.hats': 'ATS',
	'.sats': 'ATS',
	'.as': 'ActionScript',
	'.adb': 'Ada',
	'.ada': 'Ada',
	'.ads': 'Ada',
	'.agda': 'Agda',
	'.als': 'Alloy',
	'.cls': 'Visual Basic',
	'.applescript': 'AppleScript',
	'.scpt': 'AppleScript',
	'.arc': 'Arc',
	'.ino': 'Arduino',
	'.aj': 'AspectJ',
	'.asm': 'Assembly',
	'.a51': 'Assembly',
	'.inc': 'SourcePawn',
	'.nasm': 'Assembly',
	'.aug': 'Augeas',
	'.ahk': 'AutoHotkey',
	'.ahkl': 'AutoHotkey',
	'.au3': 'AutoIt',
	'.awk': 'Awk',
	'.auk': 'Awk',
	'.gawk': 'Awk',
	'.mawk': 'Awk',
	'.nawk': 'Awk',
	'.bat': 'Batchfile',
	'.cmd': 'Batchfile',
	'.befunge': 'Befunge',
	'.bison': 'Bison',
	'.bb': 'BlitzBasic',
	'.decls': 'BlitzBasic',
	'.bmx': 'BlitzMax',
	'.bsv': 'Bluespec',
	'.boo': 'Boo',
	'.b': 'Limbo',
	'.bf': 'HyPhy',
	'.brs': 'Brightscript',
	'.bro': 'Bro',
	'.c': 'C',
	'.cats': 'C',
	'.h': 'Objective-C',
	'.idc': 'C',
	'.w': 'C',
	'.cs': 'Smalltalk',
	'.cake': 'CoffeeScript',
	'.cshtml': 'C#',
	'.csx': 'C#',
	'.cpp': 'C++',
	'.c++': 'C++',
	'.cc': 'C++',
	'.cp': 'Component Pascal',
	'.cxx': 'C++',
	'.h++': 'C++',
	'.hh': 'Hack',
	'.hpp': 'C++',
	'.hxx': 'C++',
	'.inl': 'C++',
	'.ipp': 'C++',
	'.tcc': 'C++',
	'.tpp': 'C++',
	'.chs': 'C2hs Haskell',
	'.clp': 'CLIPS',
	'.cmake': 'CMake',
	'.cmake.in': 'CMake',
	'.cob': 'COBOL',
	'.cbl': 'COBOL',
	'.ccp': 'COBOL',
	'.cobol': 'COBOL',
	'.cpy': 'COBOL',
	'.capnp': "Cap'n Proto",
	'.mss': 'CartoCSS',
	'.ceylon': 'Ceylon',
	'.chpl': 'Chapel',
	'.ch': 'xBase',
	'.ck': 'ChucK',
	'.cirru': 'Cirru',
	'.clw': 'Clarion',
	'.icl': 'Clean',
	'.dcl': 'Clean',
	'.click': 'Click',
	'.clj': 'Clojure',
	'.boot': 'Clojure',
	'.cl2': 'Clojure',
	'.cljc': 'Clojure',
	'.cljs': 'Clojure',
	'.cljs.hl': 'Clojure',
	'.cljscm': 'Clojure',
	'.cljx': 'Clojure',
	'.hic': 'Clojure',
	'.coffee': 'CoffeeScript',
	'._coffee': 'CoffeeScript',
	'.cjsx': 'CoffeeScript',
	'.cson': 'CoffeeScript',
	'.iced': 'CoffeeScript',
	'.cfm': 'ColdFusion',
	'.cfml': 'ColdFusion',
	'.cfc': 'ColdFusion CFC',
	'.lisp': 'NewLisp',
	'.asd': 'Common Lisp',
	'.cl': 'OpenCL',
	'.l': 'PicoLisp',
	'.lsp': 'NewLisp',
	'.ny': 'Common Lisp',
	'.podsl': 'Common Lisp',
	'.sexp': 'Common Lisp',
	'.cps': 'Component Pascal',
	'.coq': 'Coq',
	'.v': 'Verilog',
	'.cr': 'Crystal',
	'.feature': 'Cucumber',
	'.cu': 'Cuda',
	'.cuh': 'Cuda',
	'.cy': 'Cycript',
	'.pyx': 'Cython',
	'.pxd': 'Cython',
	'.pxi': 'Cython',
	'.d': 'Makefile',
	'.di': 'D',
	'.com': 'DIGITAL Command Language',
	'.dm': 'DM',
	'.dart': 'Dart',
	'.djs': 'Dogescript',
	'.dylan': 'Dylan',
	'.dyl': 'Dylan',
	'.intr': 'Dylan',
	'.lid': 'Dylan',
	'.E': 'E',
	'.ecl': 'ECLiPSe',
	'.eclxml': 'ECL',
	'.e': 'Eiffel',
	'.ex': 'Elixir',
	'.exs': 'Elixir',
	'.elm': 'Elm',
	'.el': 'Emacs Lisp',
	'.emacs': 'Emacs Lisp',
	'.emacs.desktop': 'Emacs Lisp',
	'.em': 'EmberScript',
	'.emberscript': 'EmberScript',
	'.erl': 'Erlang',
	'.es': 'JavaScript',
	'.escript': 'Erlang',
	'.hrl': 'Erlang',
	'.xrl': 'Erlang',
	'.yrl': 'Erlang',
	'.fs': 'GLSL',
	'.fsi': 'F#',
	'.fsx': 'F#',
	'.fx': 'HLSL',
	'.flux': 'FLUX',
	'.f90': 'FORTRAN',
	'.f': 'Forth',
	'.f03': 'FORTRAN',
	'.f08': 'FORTRAN',
	'.f77': 'FORTRAN',
	'.f95': 'FORTRAN',
	'.for': 'Forth',
	'.fpp': 'FORTRAN',
	'.factor': 'Factor',
	'.fy': 'Fancy',
	'.fancypack': 'Fancy',
	'.fan': 'Fantom',
	'.fth': 'Forth',
	'.4th': 'Forth',
	'.forth': 'Forth',
	'.fr': 'Frege',
	'.frt': 'Forth',
	'.ftl': 'FreeMarker',
	'.gms': 'GAMS',
	'.g': 'GAP',
	'.gap': 'GAP',
	'.gd': 'GDScript',
	'.gi': 'GAP',
	'.tst': 'Scilab',
	'.s': 'GAS',
	'.ms': 'MAXScript',
	'.glsl': 'GLSL',
	'.fp': 'GLSL',
	'.frag': 'JavaScript',
	'.frg': 'GLSL',
	'.fsh': 'GLSL',
	'.fshader': 'GLSL',
	'.geo': 'GLSL',
	'.geom': 'GLSL',
	'.glslv': 'GLSL',
	'.gshader': 'GLSL',
	'.shader': 'GLSL',
	'.vert': 'GLSL',
	'.vrx': 'GLSL',
	'.vsh': 'GLSL',
	'.vshader': 'GLSL',
	'.gml': 'Game Maker Language',
	'.kid': 'Genshi',
	'.ebuild': 'Gentoo Ebuild',
	'.eclass': 'Gentoo Eclass',
	'.glf': 'Glyph',
	'.gp': 'Gnuplot',
	'.gnu': 'Gnuplot',
	'.gnuplot': 'Gnuplot',
	'.plot': 'Gnuplot',
	'.plt': 'Gnuplot',
	'.go': 'Go',
	'.golo': 'Golo',
	'.gs': 'JavaScript',
	'.gst': 'Gosu',
	'.gsx': 'Gosu',
	'.vark': 'Gosu',
	'.grace': 'Grace',
	'.gf': 'Grammatical Framework',
	'.groovy': 'Groovy',
	'.grt': 'Groovy',
	'.gtpl': 'Groovy',
	'.gvy': 'Groovy',
	'.gsp': 'Groovy Server Pages',
	'.hcl': 'HCL',
	'.tf': 'HCL',
	'.hlsl': 'HLSL',
	'.fxh': 'HLSL',
	'.hlsli': 'HLSL',
	'.php': 'PHP',
	'.hb': 'Harbour',
	'.hs': 'Haskell',
	'.hsc': 'Haskell',
	'.hx': 'Haxe',
	'.hxsl': 'Haxe',
	'.hy': 'Hy',
	'.pro': 'QMake',
	'.dlm': 'IDL',
	'.ipf': 'IGOR Pro',
	'.idr': 'Idris',
	'.lidr': 'Idris',
	'.ni': 'Inform 7',
	'.i7x': 'Inform 7',
	'.iss': 'Inno Setup',
	'.io': 'Io',
	'.ik': 'Ioke',
	'.thy': 'Isabelle',
	'.ijs': 'J',
	'.flex': 'JFlex',
	'.jflex': 'JFlex',
	'.jq': 'JSONiq',
	'.jsx': 'JSX',
	'.mdx': 'MDX',
	'.j': 'Objective-J',
	'.java': 'Java',
	'.jsp': 'Java Server Pages',
	'.js': 'JavaScript',
	'._js': 'JavaScript',
	'.bones': 'JavaScript',
	'.es6': 'JavaScript',
	'.jake': 'JavaScript',
	'.jsb': 'JavaScript',
	'.jscad': 'JavaScript',
	'.jsfl': 'JavaScript',
	'.jsm': 'JavaScript',
	'.jss': 'JavaScript',
	'.njs': 'JavaScript',
	'.pac': 'JavaScript',
	'.sjs': 'JavaScript',
	'.ssjs': 'JavaScript',
	'.sublime-build': 'JavaScript',
	'.sublime-commands': 'JavaScript',
	'.sublime-completions': 'JavaScript',
	'.sublime-keymap': 'JavaScript',
	'.sublime-macro': 'JavaScript',
	'.sublime-menu': 'JavaScript',
	'.sublime-mousemap': 'JavaScript',
	'.sublime-project': 'JavaScript',
	'.sublime-settings': 'JavaScript',
	'.sublime-theme': 'JavaScript',
	'.sublime-workspace': 'JavaScript',
	'.sublime_metrics': 'JavaScript',
	'.sublime_session': 'JavaScript',
	'.xsjs': 'JavaScript',
	'.xsjslib': 'JavaScript',
	'.jl': 'Julia',
	'.krl': 'KRL',
	'.sch': 'KiCad',
	'.brd': 'KiCad',
	'.kicad_pcb': 'KiCad',
	'.kt': 'Kotlin',
	'.ktm': 'Kotlin',
	'.kts': 'Kotlin',
	'.lfe': 'LFE',
	'.ll': 'LLVM',
	'.lol': 'LOLCODE',
	'.lsl': 'LSL',
	'.lslp': 'LSL',
	'.lvproj': 'LabVIEW',
	'.lasso': 'Lasso',
	'.las': 'Lasso',
	'.lasso8': 'Lasso',
	'.lasso9': 'Lasso',
	'.ldml': 'Lasso',
	'.lean': 'Lean',
	'.hlean': 'Lean',
	'.lex': 'Lex',
	'.ly': 'LilyPond',
	'.ily': 'LilyPond',
	'.m': 'Objective-C',
	'.lagda': 'Literate Agda',
	'.litcoffee': 'Literate CoffeeScript',
	'.lhs': 'Literate Haskell',
	'.ls': 'LoomScript',
	'._ls': 'LiveScript',
	'.xm': 'Logos',
	'.x': 'Logos',
	'.xi': 'Logos',
	'.lgt': 'Logtalk',
	'.logtalk': 'Logtalk',
	'.lookml': 'LookML',
	'.lua': 'Lua',
	'.fcgi': 'Shell',
	'.nse': 'Lua',
	'.pd_lua': 'Lua',
	'.rbxs': 'Lua',
	'.wlua': 'Lua',
	'.mumps': 'M',
	'.m4': 'M4Sugar',
	'.mcr': 'MAXScript',
	'.muf': 'MUF',
	'.mak': 'Makefile',
	'.mk': 'Makefile',
	'.mkfile': 'Makefile',
	'.mako': 'Mako',
	'.mao': 'Mako',
	'.mathematica': 'Mathematica',
	'.cdf': 'Mathematica',
	'.ma': 'Mathematica',
	'.mt': 'Mathematica',
	'.nb': 'Mathematica',
	'.nbp': 'Mathematica',
	'.wl': 'Mathematica',
	'.wlt': 'Mathematica',
	'.matlab': 'Matlab',
	'.maxpat': 'Max',
	'.maxhelp': 'Max',
	'.maxproj': 'Max',
	'.mxt': 'Max',
	'.pat': 'Max',
	'.moo': 'Moocode',
	'.metal': 'Metal',
	'.minid': 'MiniD',
	'.druby': 'Mirah',
	'.duby': 'Mirah',
	'.mir': 'Mirah',
	'.mirah': 'Mirah',
	'.mo': 'Modelica',
	'.mms': 'Module Management System',
	'.mmk': 'Module Management System',
	'.monkey': 'Monkey',
	'.moon': 'MoonScript',
	'.myt': 'Myghty',
	'.ncl': 'NCL',
	'.nsi': 'NSIS',
	'.nsh': 'NSIS',
	'.n': 'Nemerle',
	'.axs': 'NetLinx',
	'.axi': 'NetLinx',
	'.axs.erb': 'NetLinx+ERB',
	'.axi.erb': 'NetLinx+ERB',
	'.nlogo': 'NetLogo',
	'.nl': 'NewLisp',
	'.nim': 'Nimrod',
	'.nimrod': 'Nimrod',
	'.nit': 'Nit',
	'.nix': 'Nix',
	'.nu': 'Nu',
	'.numpy': 'NumPy',
	'.numpyw': 'NumPy',
	'.numsc': 'NumPy',
	'.ml': 'OCaml',
	'.eliom': 'OCaml',
	'.eliomi': 'OCaml',
	'.ml4': 'OCaml',
	'.mli': 'OCaml',
	'.mll': 'OCaml',
	'.mly': 'OCaml',
	'.mm': 'Objective-C++',
	'.sj': 'Objective-J',
	'.omgrofl': 'Omgrofl',
	'.opa': 'Opa',
	'.opal': 'Opal',
	'.opencl': 'OpenCL',
	'.p': 'OpenEdge ABL',
	'.scad': 'OpenSCAD',
	'.ox': 'Ox',
	'.oxh': 'Ox',
	'.oxo': 'Ox',
	'.oxygene': 'Oxygene',
	'.oz': 'Oz',
	'.pwn': 'PAWN',
	'.aw': 'PHP',
	'.ctp': 'PHP',
	'.php3': 'PHP',
	'.php4': 'PHP',
	'.php5': 'PHP',
	'.phps': 'PHP',
	'.phpt': 'PHP',
	'.pls': 'PLSQL',
	'.pck': 'PLSQL',
	'.pkb': 'PLSQL',
	'.pks': 'PLSQL',
	'.plb': 'PLSQL',
	'.plsql': 'PLSQL',
	'.sql': 'SQLPL',
	'.pov': 'POV-Ray SDL',
	'.pan': 'Pan',
	'.psc': 'Papyrus',
	'.parrot': 'Parrot',
	'.pasm': 'Parrot Assembly',
	'.pir': 'Parrot Internal Representation',
	'.pas': 'Pascal',
	'.dfm': 'Pascal',
	'.dpr': 'Pascal',
	'.lpr': 'Pascal',
	'.pp': 'Puppet',
	'.pl': 'Prolog',
	'.al': 'Perl',
	'.cgi': 'Shell',
	'.perl': 'Perl',
	'.ph': 'Perl',
	'.plx': 'Perl',
	'.pm': 'Perl6',
	'.pod': 'Perl',
	'.psgi': 'Perl',
	'.t': 'Turing',
	'.6pl': 'Perl6',
	'.6pm': 'Perl6',
	'.nqp': 'Perl6',
	'.p6': 'Perl6',
	'.p6l': 'Perl6',
	'.p6m': 'Perl6',
	'.pl6': 'Perl6',
	'.pm6': 'Perl6',
	'.pig': 'PigLatin',
	'.pike': 'Pike',
	'.pmod': 'Pike',
	'.pogo': 'PogoScript',
	'.pony': 'Pony',
	'.ps1': 'PowerShell',
	'.psd1': 'PowerShell',
	'.psm1': 'PowerShell',
	'.pde': 'Processing',
	'.prolog': 'Prolog',
	'.yap': 'Prolog',
	'.spin': 'Propeller Spin',
	'.pd': 'Pure Data',
	'.pb': 'PureBasic',
	'.pbi': 'PureBasic',
	'.purs': 'PureScript',
	'.py': 'Python',
	'.bzl': 'Python',
	'.gyp': 'Python',
	'.lmi': 'Python',
	'.pyde': 'Python',
	'.pyp': 'Python',
	'.pyt': 'Python',
	'.pyw': 'Python',
	'.rpy': "Ren'Py",
	'.tac': 'Python',
	'.wsgi': 'Python',
	'.xpy': 'Python',
	'.qml': 'QML',
	'.qbs': 'QML',
	'.pri': 'QMake',
	'.r': 'Rebol',
	'.rd': 'R',
	'.rsx': 'R',
	'.rbbas': 'REALbasic',
	'.rbfrm': 'REALbasic',
	'.rbmnu': 'REALbasic',
	'.rbres': 'REALbasic',
	'.rbtbar': 'REALbasic',
	'.rbuistate': 'REALbasic',
	'.rkt': 'Racket',
	'.rktd': 'Racket',
	'.rktl': 'Racket',
	'.scrbl': 'Racket',
	'.rl': 'Ragel in Ruby Host',
	'.reb': 'Rebol',
	'.r2': 'Rebol',
	'.r3': 'Rebol',
	'.rebol': 'Rebol',
	'.red': 'Red',
	'.reds': 'Red',
	'.cw': 'Redcode',
	'.rs': 'Rust',
	'.rsh': 'RenderScript',
	'.robot': 'RobotFramework',
	'.rg': 'Rouge',
	'.rb': 'Ruby',
	'.builder': 'Ruby',
	'.gemspec': 'Ruby',
	'.god': 'Ruby',
	'.irbrc': 'Ruby',
	'.jbuilder': 'Ruby',
	'.mspec': 'Ruby',
	'.pluginspec': 'Ruby',
	'.podspec': 'Ruby',
	'.rabl': 'Ruby',
	'.rake': 'Ruby',
	'.rbuild': 'Ruby',
	'.rbw': 'Ruby',
	'.rbx': 'Ruby',
	'.ru': 'Ruby',
	'.ruby': 'Ruby',
	'.thor': 'Ruby',
	'.watchr': 'Ruby',
	'.rs.in': 'Rust',
	'.sas': 'SAS',
	'.smt2': 'SMT',
	'.smt': 'SMT',
	'.sqf': 'SQF',
	'.hqf': 'SQF',
	'.db2': 'SQLPL',
	'.sage': 'Sage',
	'.sagews': 'Sage',
	'.sls': 'Scheme',
	'.scala': 'Scala',
	'.sbt': 'Scala',
	'.sc': 'SuperCollider',
	'.scm': 'Scheme',
	'.sld': 'Scheme',
	'.sps': 'Scheme',
	'.ss': 'Scheme',
	'.sci': 'Scilab',
	'.sce': 'Scilab',
	'.self': 'Self',
	'.sh': 'Shell',
	'.bash': 'Shell',
	'.bats': 'Shell',
	'.command': 'Shell',
	'.ksh': 'Shell',
	'.sh.in': 'Shell',
	'.tmux': 'Shell',
	'.tool': 'Shell',
	'.zsh': 'Shell',
	'.sh-session': 'ShellSession',
	'.shen': 'Shen',
	'.sl': 'Slash',
	'.smali': 'Smali',
	'.st': 'Smalltalk',
	'.tpl': 'Smarty',
	'.sp': 'SourcePawn',
	'.sma': 'SourcePawn',
	'.nut': 'Squirrel',
	'.stan': 'Stan',
	'.ML': 'Standard ML',
	'.fun': 'Standard ML',
	'.sig': 'Standard ML',
	'.sml': 'Standard ML',
	'.do': 'Stata',
	'.ado': 'Stata',
	'.doh': 'Stata',
	'.ihlp': 'Stata',
	'.mata': 'Stata',
	'.matah': 'Stata',
	'.sthlp': 'Stata',
	'.scd': 'SuperCollider',
	'.swift': 'Swift',
	'.sv': 'SystemVerilog',
	'.svh': 'SystemVerilog',
	'.vh': 'SystemVerilog',
	'.txl': 'TXL',
	'.tcl': 'Tcl',
	'.adp': 'Tcl',
	'.tm': 'Tcl',
	'.tcsh': 'Tcsh',
	'.csh': 'Tcsh',
	'.thrift': 'Thrift',
	'.tu': 'Turing',
	'.ts': 'TypeScript',
	'.tsx': 'TypeScript',
	'.upc': 'Unified Parallel C',
	'.uno': 'Uno',
	'.uc': 'UnrealScript',
	'.ur': 'UrWeb',
	'.urs': 'UrWeb',
	'.vcl': 'VCL',
	'.vhdl': 'VHDL',
	'.vhd': 'VHDL',
	'.vhf': 'VHDL',
	'.vhi': 'VHDL',
	'.vho': 'VHDL',
	'.vhs': 'VHDL',
	'.vht': 'VHDL',
	'.vhw': 'VHDL',
	'.vala': 'Vala',
	'.vapi': 'Vala',
	'.veo': 'Verilog',
	'.vim': 'VimL',
	'.vb': 'Visual Basic',
	'.bas': 'Visual Basic',
	'.frm': 'Visual Basic',
	'.frx': 'Visual Basic',
	'.vba': 'Visual Basic',
	'.vbhtml': 'Visual Basic',
	'.vbs': 'Visual Basic',
	'.volt': 'Volt',
	'.webidl': 'WebIDL',
	'.x10': 'X10',
	'.xc': 'XC',
	'.xsp-config': 'XPages',
	'.xsp.metadata': 'XPages',
	'.xpl': 'XProc',
	'.xproc': 'XProc',
	'.xquery': 'XQuery',
	'.xq': 'XQuery',
	'.xql': 'XQuery',
	'.xqm': 'XQuery',
	'.xqy': 'XQuery',
	'.xs': 'XS',
	'.xslt': 'XSLT',
	'.xsl': 'XSLT',
	'.xojo_code': 'Xojo',
	'.xojo_menu': 'Xojo',
	'.xojo_report': 'Xojo',
	'.xojo_script': 'Xojo',
	'.xojo_toolbar': 'Xojo',
	'.xojo_window': 'Xojo',
	'.xtend': 'Xtend',
	'.y': 'Yacc',
	'.yacc': 'Yacc',
	'.yy': 'Yacc',
	'.zep': 'Zephir',
	'.zimpl': 'Zimpl',
	'.zmpl': 'Zimpl',
	'.zpl': 'Zimpl',
	'.ec': 'eC',
	'.eh': 'eC',
	'.fish': 'fish',
	'.mu': 'mupad',
	'.nc': 'nesC',
	'.ooc': 'ooc',
	'.wisp': 'wisp',
	'.prg': 'xBase',
	'.prw': 'xBase'
};

export const allSupportedExtensions = [
	...generalFileExtSupported,
	...Object.keys(programmingFilesExtensions)
];

export const MEMORYSETS: memorysetsConstants = {
	MAX_DOC_SIZE: 10 * 1024 * 1024, // 10MB = 10 * 1024 KB = 10 * 1024 * 1024 bytes
	ACCEPTED_MIME_TYPES: [
		'text/plain',
		'application/pdf',
		'text/markdown',
		'text/csv',
		'application/vnd.ms-excel',
		'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
	],
	DOC_TYPES: generalFileExtSupported,
	EMBEDDING_MODEL: 'text-embedding-3-large',
	EMBEDDING_DIMENSIONS: 256,
	MIN_CHUNK_LENGTH: 1024,
	MAX_CHUNK_LENGTH: 30000,
	MIN_CHUNK_OVERLAP: 256,
	EMBEDDING_MODEL_TOKENS_LIMIT: 8191,
	EMBEDDING_MAX_BATCH_SIZE: 2048,
	EMBEDDING_ENCODING_FORMAT: 'float',
	TOP_K: 3,
	MAX_CHUNKS_ATTACHED_TO_LLM: 20,
	OLLAMA_EMBEDDINGS_ENDPOINT: 'http://localhost:11434/api/embeddings',
	OLLAMA_EMBEDDINGS_MODEL: 'mxbai-embed-large'
};

interface memorysetsConstants {
	MAX_DOC_SIZE: number;
	ACCEPTED_MIME_TYPES: string[];
	DOC_TYPES: string[];
	EMBEDDING_MODEL: string;
	EMBEDDING_DIMENSIONS: number;
	EMBEDDING_ENCODING_FORMAT: 'float' | 'base64';
	MIN_CHUNK_LENGTH: number;
	MIN_CHUNK_OVERLAP: number;
	MAX_CHUNK_LENGTH: number;
	EMBEDDING_MODEL_TOKENS_LIMIT: number;
	EMBEDDING_MAX_BATCH_SIZE: number;
	TOP_K: number;
	MAX_CHUNKS_ATTACHED_TO_LLM: number;
	OLLAMA_EMBEDDINGS_ENDPOINT: string;
	OLLAMA_EMBEDDINGS_MODEL: string;
}

export const defaultRagPrompt = `Below is some CONTEXT for you to answer the questions. ONLY answer from the CONTEXT. CONTEXT consists of multiple information chunks. Each chunk has a source mentioned at the end.\n\nFor each piece of response you provide, cite the source in brackets like so: [1].\n\nAt the end of the answer, always list each source with its corresponding number and provide the document name. like so [1] Filename.doc.\n\nIf you don't know the answer, just say that you don't know. Ask for more context and better questions if needed.`;
